package fr.babostesting.unit.components.resizable
{
	import com.greensock.easing.Strong;
	import com.greensock.TweenMax;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.display.StageQuality;
	import flash.events.MouseEvent;
	import flash.filters.BevelFilter;
	import flash.filters.DropShadowFilter;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	//import flash.system.Worker;
	//import flash.system.WorkerDomain;
	import flash.text.StyleSheet;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextInteractionMode;
	import flash.text.TextRun;
	import flash.ui.Multitouch;
	import flash.ui.MultitouchInputMode;
	import flash.utils.ByteArray;
	import flash.utils.getQualifiedClassName;
	import fr.babos.core.entries.Document;
	import fr.babos.graphic.base.ResizableComponent;
	import fr.babos.graphic.base.StageWrapper;
	import fr.babos.graphic.components.bitmaps.AdvancedBitmap;
	import fr.babos.graphic.components.bitmaps.BitmapRender;
	import fr.babos.graphic.components.misc.BorderComponent;
	import fr.babos.graphic.components.text.HTMLText;
	import fr.babos.graphic.components.text.Input;
	import fr.babos.graphic.components.text.Label;
	import fr.babos.graphic.styles.StyleCentral;
	import fr.babos.touch.delegate.ITouchDelegate;
	import fr.babos.touch.delegate.ITouchDragDelegate;
	import fr.babos.touch.emulator.MouseToTouchEmulator;
	import fr.babos.touch.emulator.TouchEmulator;
	import fr.babos.utils.ClassUtils;
	import fr.babos.utils.StringUtils;
	import fr.babos.utils.TimerUtils;
	import net.hires.debug.Stats;
	
	/**
	 * @author ZoulouX
	 */
	public class ResizableComponentTest extends Document implements ITouchDragDelegate
	{
		protected var _wrapper:StageWrapper
		protected var t:String = <![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tellus ante, fermentum non semper non, molestie quis diam. Suspendisse tristique pretium ligula non aliquam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean eget tellus quam, eu ullamcorper nisl. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque ante justo, egestas ac scelerisque eget, rutrum id orci. Proin sed metus mauris, sit amet feugiat diam. In feugiat dictum ornare.
Nam vulputate lacus non risus vehicula at vehicula quam laoreet. <b>Nunc</b> at <a href="test">viverra</a> libero augue, ac pharetra felis. Ut est augue, fringilla nec fringilla quis, semper ac magna. Mauris augue leo, gravida ut vehicula sollicitudin, pharetra quis magna. Curabitur elementum metus eget odio molestie a lobortis augue eleifend. Duis vitae accumsan nibh. Integer fringilla tortor sit amet tellus malesuada tristique nec a eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris nec elit massa. Quisque tempus nunc sed risus molestie volutpat. Fusce cursus libero at ipsum ultrices tempor at iaculis nulla. Nullam bibendum, enim quis tempus ultrices, nulla orci fringilla justo, non dignissim enim massa sed sem. Vestibulum congue, urna in condimentum bibendum, ipsum mi iaculis velit, in blandit nunc neque in magna. Ut mattis tempor tortor in sollicitudin. Mauris lacinia faucibus nisl et ullamcorper. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Phasellus consequat massa vel turpis suscipit in pulvinar lectus dapibus. Mauris nisi risus, sodales quis ullamcorper vel, fringilla nec felis. Quisque aliquam orci ac felis fringilla vel pretium lectus cursus. Duis erat magna, aliquet in varius et, bibendum a dolor. Suspendisse id venenatis orci. Sed tincidunt, erat eget rutrum porta, magna odio venenatis lorem, tincidunt blandit velit nibh at libero. Aliquam lacus mi, facilisis nec egestas at, fringilla vitae justo. Praesent ac urna a justo tempor ullamcorper id nec velit. Sed diam felis, aliquam sed consectetur porta, viverra sit amet mauris. Donec viverra dictum convallis. Vivamus id ligula a lectus tincidunt varius. Suspendisse convallis, metus vel feugiat imperdiet, mi leo viverra erat, in interdum mauris nunc vel quam. Donec eget neque eu dui condimentum iaculis. Vestibulum rhoncus libero quis mauris eleifend ac porttitor nunc viverra. Aliquam sed justo metus, sit amet interdum nibh. Integer nec enim lectus, pretium adipiscing nunc.
In quis nisi ac massa accumsan bibendum nec ut lacus. Vestibulum sagittis justo vel nunc dapibus in varius tellus sagittis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi tristique fringilla tortor eget hendrerit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam eu quam a est hendrerit dapibus eu at mauris. Sed feugiat, dui id congue sodales, dolor dolor euismod metus, ut aliquet lorem arcu elementum nunc. Aliquam condimentum laoreet purus, vel fringilla leo suscipit condimentum. Nulla facilisi. Etiam vehicula blandit ligula et condimentum. Donec placerat augue auctor nibh vehicula in sodales lacus eleifend. Vestibulum ornare metus in diam rutrum elementum. Donec justo est, iaculis vitae tristique quis, pharetra sed tortor.
Mauris eu nibh augue. Quisque sed felis vitae lectus adipiscing porttitor. Sed sodales diam vitae ligula hendrerit pretium ullamcorper nisl venenatis. Nunc commodo ullamcorper scelerisque. Nunc dapibus aliquet semper. Pellentesque nibh sapien, adipiscing rhoncus ultrices quis, porttitor sed arcu. Quisque eros orci, faucibus facilisis rutrum sed, tempus ac justo. Duis sed urna in ante semper pulvinar vitae nec sapien. Vivamus tellus massa, sagittis sit amet dignissim sed, semper sit amet magna. Curabitur ultrices, nisl sed eleifend vestibulum, magna sem suscipit mauris, a gravida enim nulla id metus. Pellentesque sed neque sed magna porttitor eleifend. Suspendisse pharetra, ante ut interdum iaculis, mauris tellus rhoncus odio, ornare posuere libero sapien eget urna.
Sed lobortis iaculis orci, quis facilisis metus imperdiet vel. Donec vulputate dictum orci non rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus mi nibh, fermentum nec aliquet vitae, congue sit amet nibh. Curabitur eu erat id dolor sagittis feugiat quis nec neque. Ut sem justo, elementum in ornare quis, volutpat faucibus nunc. Donec sit amet erat orci. Curabitur malesuada ante sed turpis rhoncus sit amet ultricies ante dapibus. Proin non sem et risus convallis ultricies sed id mauris. Sed quis justo nec nulla sollicitudin viverra. Praesent commodo, diam condimentum egestas sagittis, nisl tellus euismod risus, quis auctor arcu nulla eu erat. Proin at felis urna. Nulla vitae auctor velit.
Quisque ut bibendum nibh. In lacus enim, fringilla vel bibendum sed, interdum eu nisl. Ut bibendum magna tempus sapien vehicula porta. Quisque molestie tellus ac nisl fermentum sed iaculis nunc accumsan. Mauris adipiscing cursus risus at rhoncus. Sed iaculis nibh id turpis hendrerit ut interdum mi fringilla. In rhoncus porta elementum. In mollis malesuada urna. Ut pulvinar ipsum eget magna rutrum laoreet. Vivamus semper iaculis massa vel adipiscing. Aliquam pulvinar accumsan enim, luctus accumsan neque sodales quis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque nisl eros, sollicitudin eget pellentesque vitae, scelerisque elementum orci. Vivamus ut nisl vitae arcu dictum aliquet eget eget augue. Donec vitae tellus risus.
Aliquam lacinia ultrices erat vitae faucibus. Integer vel elementum elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed consequat, augue ut varius dignissim, sem libero eleifend odio, id hendrerit arcu ipsum eu nisl. Quisque ultrices lobortis tellus quis porttitor. Vestibulum euismod tempus mollis. Ut elementum, diam vitae aliquet euismod, est justo blandit metus, eget facilisis risus sapien in augue. Donec viverra mattis mauris ac scelerisque. Nullam elementum erat a sem dignissim rhoncus porta erat convallis. Phasellus malesuada tellus risus. Vestibulum pharetra placerat ullamcorper.
Vivamus id dui sit amet elit pulvinar cursus. Maecenas sit amet lacus urna, vel fermentum lectus. Vestibulum ultrices euismod commodo. Duis mattis quam est. Maecenas et libero tellus, vitae varius velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam in elit et turpis sodales eleifend. Proin tempus tellus non dui porttitor ac auctor ante pellentesque. Morbi aliquam lorem id nisi volutpat aliquam. Quisque interdum neque euismod diam suscipit dignissim. Praesent quam nunc, iaculis vel molestie in, iaculis a orci. In hac habitasse platea dictumst. Nullam non magna eget metus dictum iaculis non ut sapien. Proin eget adipiscing eros.
Aliquam volutpat felis massa, in posuere enim. Donec scelerisque consectetur facilisis. In felis nunc, tincidunt non consectetur nec, aliquet sed velit. Fusce eget magna vel mi pulvinar gravida. Praesent faucibus, ligula eu scelerisque pretium, nibh eros viverra quam, et aliquet risus nibh nec orci. Praesent venenatis vulputate est id suscipit. Donec posuere ante vel diam consequat ultricies. Etiam neque ligula, sollicitudin a tincidunt sed, laoreet sed lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hac habitasse platea dictumst. In nec arcu eu mauris gravida elementum. Suspendisse id mollis mi. Mauris adipiscing urna bibendum tellus consectetur ut hendrerit velit dignissim.
Donec quis quam lobortis metus gravida adipiscing tempus at dolor. Praesent nulla ligula, venenatis eget pharetra sed, vestibulum non ante. Aenean ac dolor vitae tortor consequat volutpat. Cras pharetra, purus sed consectetur commodo, odio libero tristique justo, eu volutpat magna lectus quis turpis. Cras viverra arcu sit amet est vehicula vulputate non quis risus. Suspendisse mattis, nisl sit amet fermentum ornare, augue ipsum dictum est, et congue lacus tellus quis nibh. Aliquam nibh libero, tristique quis iaculis eget, scelerisque id augue. Suspendisse enim elit, hendrerit ut aliquam non, dignissim et enim. Integer eget facilisis nulla. Praesent leo libero, mattis ac dignissim in, adipiscing in justo. Integer consectetur consectetur eros. Nunc ut orci sit amet eros mollis tristique et at lacus. Mauris non est in nisi pellentesque blandit sit amet eget metus.
Sed nec arcu nulla. Nunc suscipit, nisi sed auctor placerat, turpis ante suscipit ipsum, vel cursus eros libero eu sapien. Nam vitae rhoncus lectus. Aenean eget sapien lectus, non tempor mauris. Fusce quis dui lacus. Aliquam erat volutpat. Sed felis ipsum, fringilla ut tristique at, viverra vel augue. Donec egestas, turpis id porttitor congue, est dolor rutrum massa, id tempor sem ligula eget est.
Proin dictum, nulla ut mollis fringilla, massa arcu faucibus velit, ut auctor ante erat eget lacus. Donec nisl lacus, interdum a luctus eu, lacinia vel erat. Aenean feugiat, lectus ut tincidunt eleifend, elit lacus fermentum lorem, non laoreet orci tellus quis risus. Curabitur pharetra, velit eget fermentum luctus, tortor mi porttitor leo, ac tristique risus mauris in velit. Ut mauris magna, aliquam bibendum feugiat non, consectetur eget urna. Quisque ac nibh ac arcu malesuada ullamcorper. Nam ac elit tortor.
Donec nisi nulla, elementum porta malesuada vel, pretium eu sapien. Suspendisse non quam magna. Etiam placerat blandit quam id posuere. Ut viverra condimentum dolor eu laoreet. Donec vestibulum vehicula neque eu consectetur. Phasellus eu libero tincidunt orci mattis consectetur in pulvinar nisi. Cras malesuada iaculis molestie. In tincidunt eleifend pulvinar. Pellentesque vitae nunc orci, ac blandit est. Etiam vel metus lectus, vel egestas nulla.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tincidunt dolor sit amet eros lobortis porttitor. In dolor orci, tristique et vehicula vitae, faucibus sed sapien. Nulla vestibulum leo ullamcorper felis mattis in aliquam turpis fermentum. Vestibulum eget purus risus, sit amet ornare leo. Nam sapien ipsum, adipiscing non tempor at, facilisis non elit. Proin imperdiet adipiscing sagittis. Cras pretium ullamcorper elit, nec consectetur tortor congue nec. In id elit ante. Pellentesque metus mauris, mattis et auctor in, tincidunt vitae est.
Aliquam erat volutpat. Nullam scelerisque, neque sed pharetra hendrerit, elit urna scelerisque velit, quis ultricies sapien est placerat dolor. Nunc mattis, elit ac lacinia pretium, nisl magna egestas dui, non accumsan eros ante vel neque. Vivamus gravida egestas nibh, eu facilisis nisl ullamcorper nec. Nullam aliquam diam in quam pharetra feugiat. Aenean id urna vitae justo vulputate pretium. Morbi scelerisque dapibus velit viverra ultrices. Pellentesque cursus ante a dui sodales consectetur. Ut dapibus accumsan laoreet. Nunc metus ligula, luctus eu luctus tristique, venenatis ut dui. Nunc condimentum libero molestie risus laoreet eu interdum nisi fringilla. Curabitur tempor pellentesque ipsum sed rhoncus. Praesent consectetur ligula et nisl bibendum egestas vitae vel metus. Donec a velit neque. Vestibulum mi tellus, dapibus quis congue eget, tempus sit amet enim.
Vivamus cursus, massa et fermentum bibendum, leo mi condimentum turpis, eget venenatis augue tellus eget magna. Nulla massa velit, eleifend sed vulputate vel, viverra ac magna. Proin eleifend porta eros quis aliquet. Proin venenatis condimentum faucibus. Aenean tincidunt elementum lorem, eget consectetur lectus blandit et. Suspendisse neque nisi, fringilla ac vulputate sed, condimentum sed ipsum. Cras et lacus odio, et mattis dui. Mauris elit mauris, porttitor eu fringilla et, porttitor nec dolor. Aliquam ultrices imperdiet massa, vitae venenatis risus commodo a.
Ut odio elit, laoreet sed convallis a, placerat id dolor. Donec bibendum aliquet diam, in aliquet neque porta nec. Mauris vel massa id urna tristique tincidunt in nec lectus. Phasellus lectus justo, laoreet eu porttitor nec, venenatis nec tortor. Fusce non eros quis eros volutpat malesuada. Vivamus at condimentum nibh. Sed nec nisl et velit vehicula tincidunt non viverra sem. In pellentesque fermentum lorem, id fermentum velit tincidunt in. Donec tortor tortor, luctus sit amet mattis vel, facilisis a metus. Maecenas suscipit egestas felis, nec tincidunt diam facilisis id. Mauris tincidunt, enim nec laoreet suscipit, erat quam fringilla quam, sit amet suscipit nulla mi a augue. Nulla ut lacus id felis facilisis posuere id et nisl.
Duis vel enim velit. Donec fringilla libero luctus metus mattis eleifend. Curabitur sit amet felis arcu, vitae malesuada eros. Quisque at dolor sed sem euismod mollis. Duis erat dolor, tristique vitae malesuada vel, scelerisque sit amet est. Sed sit amet justo massa. Nulla ut laoreet turpis. Ut tempor scelerisque sapien quis consectetur. Pellentesque pharetra ante mollis ante tincidunt placerat congue justo viverra. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam ac ipsum nulla. Morbi a enim felis, eget posuere odio. Ut quis est erat. Proin velit enim, placerat non ultrices eu, sodales non justo. Sed aliquet purus in lacus ultrices cursus.
Sed ligula nulla, suscipit id congue id, consectetur nec lorem. Morbi augue eros, convallis dapibus scelerisque sed, fringilla vitae arcu. Duis egestas posuere leo, non fermentum nunc fermentum nec. Donec a felis urna, vel euismod est. Vivamus tempus volutpat leo a viverra. Sed bibendum auctor odio vel euismod. Fusce at tortor sit amet turpis cursus vulputate. Fusce tellus erat, convallis eget viverra sit amet, tristique quis elit. Nulla sagittis pulvinar tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed porttitor mauris metus. Quisque non iaculis nisl. Vestibulum tempor lectus ac augue porta in tempor lacus vestibulum.
Maecenas porttitor arcu lectus. Curabitur at diam erat. Donec vitae enim arcu, eget ultrices leo. Maecenas sagittis rutrum lorem, eget ultrices ipsum tincidunt vel. Etiam molestie orci et nisi ornare sed eleifend felis fringilla. Etiam iaculis aliquam fermentum. Nulla a lacus quis magna bibendum egestas. Integer pulvinar fringilla justo at tincidunt. Cras id eros a nisl mattis condimentum non ac nibh. Duis tempus faucibus felis, non venenatis quam fringilla viverra. Vestibulum at diam et elit pretium tincidunt. In a elementum libero. Suspendisse urna urna, pretium accumsan tempor non, sodales eget tellus. Mauris non nunc sit amet ante vestibulum ullamcorper. Integer blandit dignissim dui.
Pellentesque ante libero, consequat in ullamcorper at, adipiscing a felis. Duis condimentum risus a turpis commodo sodales porta metus interdum. Nulla vitae velit sit amet risus placerat egestas sit amet ac quam. Nulla nibh enim, lacinia nec consequat at, tempor nec odio. Nunc rutrum, velit et semper suscipit, turpis ligula sollicitudin nisi, vel dictum metus erat at diam. Cras iaculis, nunc eget vulputate euismod, mi metus euismod risus, eu interdum nibh diam eu augue. Vestibulum metus dui, ultrices lacinia egestas at, tempor non est. Proin elit justo, tristique et adipiscing at, aliquam at erat. Cras aliquet lacus a lacus aliquam imperdiet. Cras porttitor posuere velit, eget placerat nisi lacinia at. Etiam eu augue libero, sed facilisis eros. Donec quam tortor, laoreet at fringilla eu, feugiat non odio. In convallis magna id enim interdum imperdiet. Nulla nec rutrum ante. Phasellus placerat quam at nulla dictum dapibus nec id metus. Duis id justo nec quam consequat laoreet.
Pellentesque eget nibh purus. Etiam enim nunc, sagittis vel varius a, mollis at sapien. Sed augue enim, volutpat eget convallis in, dapibus eu lectus. Suspendisse sed porttitor nisl. Nam eu ligula dolor, eget molestie sem. Phasellus semper malesuada leo, ac mollis orci iaculis in. Etiam ac dui in velit malesuada lobortis. Pellentesque aliquam quam justo, non ultricies diam. Donec dapibus ullamcorper augue molestie luctus. Etiam malesuada iaculis elit sed suscipit. Proin congue dui eget nibh ornare ut rhoncus augue fermentum. Nunc eget ante massa, eget ultricies nulla. Proin tincidunt lacus ac arcu dignissim fermentum. Vivamus blandit egestas laoreet.
Phasellus tempor rhoncus leo, vitae semper est interdum in. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec luctus porttitor pharetra. Maecenas semper volutpat pharetra. Donec lacinia eros et turpis fermentum suscipit et vel nunc. In rhoncus quam est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ultricies porttitor porttitor. Vivamus porta lacinia tempor. Duis magna erat, molestie vitae faucibus in, luctus at erat.
Sed elit nisi, vestibulum at sollicitudin vitae, vehicula quis purus. Donec aliquam, turpis ac tristique facilisis, tellus quam accumsan tortor, non mollis lectus justo at nisi. Aenean sed est eget erat placerat ornare. Donec rhoncus, sapien nec congue vestibulum, erat urna auctor nibh, placerat volutpat purus lacus sit amet tellus. Duis fermentum turpis vitae ligula cursus sit amet laoreet sapien fringilla. Duis ac ipsum consectetur lorem sollicitudin dictum. Suspendisse urna lorem, porttitor ac mattis ac, vulputate a dolor. Ut vulputate, nulla sit amet dignissim hendrerit, eros magna porttitor massa, at sagittis enim quam quis nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum porta luctus turpis, non dignissim metus scelerisque eget. Curabitur sit amet dolor arcu. Morbi vel risus libero. Nulla porta eleifend gravida. Aenean vel ipsum in purus malesuada egestas sit amet a mi.
Vestibulum tristique condimentum justo, id laoreet nulla vestibulum eget. Aenean vitae purus metus, eget luctus mauris. Maecenas scelerisque erat eu velit congue vitae dictum magna euismod. Etiam ac lorem augue. Nullam aliquet vestibulum mi in auctor. Proin lacus turpis, pretium eu pulvinar id, dictum sit amet lorem. Donec tortor justo, molestie at ultricies nec, mattis vitae felis. Etiam vehicula dignissim ligula a malesuada. Mauris aliquet accumsan laoreet. Sed fermentum rutrum ligula, mollis porta nisl euismod non. Integer blandit dignissim diam. Nulla mattis, mauris vitae tristique euismod, orci ligula mattis tortor, eu imperdiet eros massa aliquam sem. Pellentesque luctus lacinia tellus, a porttitor diam lobortis condimentum. Sed at dictum magna.
Vestibulum molestie, quam sit amet fermentum adipiscing, est ligula posuere enim, at eleifend ipsum nibh eu felis. Sed consequat iaculis elit. Aenean pulvinar egestas aliquam. Etiam leo orci, sagittis vitae mattis at, volutpat sed mi. Phasellus id justo ipsum. Sed ultrices risus eu erat pellentesque sed vehicula nisl commodo. Sed ut lectus vel neque tincidunt dictum a a tellus. Fusce ac pellentesque nunc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu nisl ipsum. Duis eu diam ipsum, non fringilla ipsum. Curabitur in nisl ligula. Phasellus sodales convallis pharetra. Curabitur id dolor ut erat hendrerit mollis. Suspendisse bibendum, nisi quis elementum pretium, sapien augue cursus mi, nec dictum nunc felis non felis.
Nam ut dui ante, eget posuere libero. Vestibulum consectetur sollicitudin iaculis. Vestibulum fringilla odio et leo vestibulum blandit. Nam molestie vehicula est ut blandit. Vestibulum eu lorem et nisi iaculis gravida sed eget odio. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse lectus odio, dictum a congue nec, tempus quis lacus. Pellentesque quam elit, euismod vitae varius quis, rhoncus nec elit. Sed sodales nisl vitae orci lobortis sollicitudin. Duis sem nisl, placerat et consequat ultricies, sagittis a nunc. Nunc quis leo sed neque vulputate feugiat. Duis eget dolor ac ante convallis lobortis at non purus. Morbi adipiscing pellentesque orci a tristique.
Donec id neque sit amet ipsum mattis vehicula. Maecenas lacus erat, lacinia at egestas placerat, feugiat vitae ante. Nullam bibendum, velit eleifend malesuada dictum, enim arcu consequat erat, eget imperdiet diam erat quis lectus. Aenean a purus a dolor pulvinar porta ut et nisi. Integer aliquam rhoncus sollicitudin. Fusce urna lectus, hendrerit eu scelerisque non, vestibulum ac tellus. Phasellus vel auctor arcu. Nullam vel purus felis, at euismod nunc. Mauris congue, tellus a mattis volutpat, diam libero aliquam massa, ac rhoncus augue dolor ac purus. Aenean lobortis odio sed tortor vulputate lacinia. Quisque libero diam, varius sit amet facilisis vel, tincidunt vitae sem. Suspendisse potenti.
Nullam nisi nisi, tincidunt non commodo ut, consequat nec massa. Ut dapibus iaculis dignissim. Ut pretium sodales dolor id interdum. Etiam id erat massa, at consectetur ipsum. Aenean egestas, tellus id tempus mattis, massa nunc convallis magna, interdum sodales lacus leo non arcu. Integer vestibulum massa mollis est fringilla ornare. Morbi augue magna, euismod et facilisis id, sodales at odio. Etiam ac eros sit amet ante tempus sollicitudin vehicula sed sapien. Aliquam ante tellus, bibendum nec accumsan eleifend, dictum id sem.
Pellentesque porta, orci eget tempus tempus, quam arcu porttitor nibh, id accumsan magna diam vel neque. Maecenas fringilla, mauris et pretium commodo, diam orci facilisis leo, semper egestas tellus nisi sit amet turpis. Suspendisse viverra placerat purus vitae accumsan. Curabitur ac quam ut nulla venenatis aliquam. Fusce sem lectus, volutpat et gravida vitae, ullamcorper ac ipsum. Donec in velit a sapien iaculis feugiat. Nam nec elit vel mi elementum suscipit. Proin ante mauris, lacinia in bibendum a, ullamcorper eu ligula. Ut quam risus, accumsan vel consequat ut, euismod eget nisi. Etiam vulputate ante vel augue scelerisque vulputate. Phasellus eget tortor ut dolor rhoncus faucibus vitae ac lorem. Maecenas aliquet sagittis orci, quis porttitor urna semper a. Curabitur vel elit at eros molestie elementum ac nec est. Aenean id velit egestas augue vehicula dapibus.
Aenean ultricies libero ac magna malesuada porttitor. Integer et augue eu sapien interdum rhoncus vitae eget purus. Sed quis metus at ante semper aliquet. Aenean placerat elementum condimentum. Integer lacinia vestibulum erat, sed hendrerit felis iaculis et. Mauris imperdiet augue a ipsum posuere sed malesuada risus accumsan. Ut ornare consequat quam, ut gravida diam congue in.
Vivamus vel massa convallis quam posuere gravida. Nullam a fermentum lacus. Integer ullamcorper semper justo ac fermentum. Aliquam feugiat interdum nisl, a pellentesque sem viverra a. Fusce ullamcorper arcu nec diam dapibus mollis. In pharetra, velit et imperdiet accumsan, tortor nibh hendrerit mi, pulvinar dignissim massa dolor ac ipsum. Suspendisse faucibus sapien vitae est porta sit amet consequat ipsum pulvinar. Quisque magna odio, lacinia nec consectetur nec, facilisis id neque. Integer at lectus et arcu sollicitudin gravida et ut mauris. Aliquam ut arcu sit amet turpis lobortis vehicula. Donec fermentum diam luctus nisl lobortis suscipit. Fusce malesuada facilisis ipsum adipiscing mattis. In sem dui, mollis eu adipiscing eget, condimentum vel dui. Praesent iaculis pretium dolor, non ornare nibh ultricies sed. Morbi justo erat, ornare quis laoreet non, dignissim sed nulla.
Donec eget lorem eget nulla scelerisque posuere. In luctus, lectus quis posuere convallis, urna ante eleifend elit, et posuere massa tortor sed odio. Curabitur sit amet ultrices tellus. Aliquam sed adipiscing nulla. Aliquam sed varius diam. Praesent non sem nisl, sed malesuada risus. Curabitur vitae lectus et leo pulvinar molestie egestas sed lectus. Nam bibendum ligula sit amet purus iaculis commodo.
Praesent non magna et tellus pharetra faucibus. Quisque eget risus neque, eu aliquet leo. Morbi ornare mauris a mauris commodo tempus. Etiam ac ipsum vitae ligula fringilla pellentesque. Vestibulum ac suscipit turpis. Sed vitae turpis pulvinar libero viverra aliquet ut et eros. Duis iaculis est ac tellus laoreet iaculis. In hac habitasse platea dictumst.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam et augue lacus, et rutrum nulla. Duis sit amet odio sit amet nulla varius lobortis. Nam et adipiscing tortor. Nunc nec condimentum turpis. Donec a rutrum tortor. Praesent accumsan tincidunt lacus id congue. Nunc nec velit sit amet metus suscipit consequat sed eget nisi. Mauris ac enim nunc, sed ullamcorper magna. Phasellus a purus non ligula sodales convallis eu quis turpis.
Suspendisse potenti. Ut massa ligula, fermentum non posuere eget, blandit sed est. Etiam vulputate pellentesque velit ut pulvinar. Mauris vulputate sodales velit in mollis. In libero sem, varius eu elementum in, sollicitudin sit amet enim. Sed iaculis euismod sem eu accumsan. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sagittis, erat et vestibulum viverra, massa quam feugiat turpis, id laoreet arcu neque non purus. Ut fringilla sodales nisi vel volutpat. Phasellus eleifend turpis nec enim condimentum non dapibus enim convallis. Cras faucibus quam a risus aliquam posuere fringilla diam porttitor. Nunc ut turpis arcu, at ultricies ligula. Morbi eleifend sagittis hendrerit. Donec eget ante lectus. Praesent vitae felis nulla. Morbi egestas rhoncus ornare.
Donec at diam magna. Pellentesque fermentum, nulla a bibendum porta, quam ipsum faucibus libero, ut suscipit velit tortor at metus. Vivamus risus massa, ullamcorper vel elementum ut, tincidunt id mi. In suscipit, ipsum id posuere commodo, quam lacus pretium justo, eget pretium orci felis id risus. Phasellus mollis rhoncus libero quis euismod. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus massa diam, mattis sed tincidunt a, tincidunt sit amet nisl. Maecenas imperdiet neque interdum ipsum consequat dapibus. Donec vel ipsum erat. Morbi luctus aliquet porttitor. Nam diam lectus, mattis in iaculis ut, pulvinar quis turpis.
Cras lectus tellus, posuere facilisis tincidunt convallis, varius non justo. Vestibulum imperdiet ipsum viverra nisi accumsan consectetur. Ut lobortis nisi sit amet eros iaculis sodales. Praesent sit amet ultricies lorem. Suspendisse sodales lacinia libero vel placerat. Morbi et varius lacus. Cras tortor nisi, volutpat in euismod vitae, adipiscing in diam. Sed vel felis eu nisl dignissim pellentesque. Maecenas suscipit venenatis sapien. Curabitur vitae elit felis.
Integer eleifend arcu in libero varius quis iaculis sapien scelerisque. Integer scelerisque sem at lorem euismod pretium. Donec sed tellus in ante mollis ullamcorper. Phasellus ac egestas eros. Donec ut erat odio. Ut sollicitudin, enim sed imperdiet elementum, urna leo eleifend tortor, sed commodo purus tellus ut risus. Vivamus malesuada, tortor et consequat elementum, nunc ligula lobortis turpis, vel placerat leo quam a dui. Donec ornare neque sed leo lacinia vehicula elementum dui imperdiet. Maecenas molestie libero nisl.
Ut nunc quam, pretium ut ornare vel, porta sit amet lorem. Aenean dictum iaculis pulvinar. Nullam ut justo eget justo tristique tincidunt. Nam ullamcorper hendrerit neque non ultrices. Suspendisse convallis sapien id felis mattis rhoncus nec bibendum tortor. Donec dapibus, lectus sed egestas pellentesque, felis ipsum rhoncus massa, molestie vestibulum dui nibh vel justo. Aliquam laoreet nisi vel magna vehicula lobortis. Duis eu molestie eros. Duis posuere, urna a vestibulum ultrices, diam urna rhoncus nulla, ut tristique dolor dui ac dolor. Vestibulum mollis molestie massa id dapibus.
Mauris dignissim sodales fermentum. Suspendisse ligula magna, condimentum vitae aliquet at, mollis at elit. Vestibulum id tortor justo, vel interdum mauris. Nullam egestas lorem vel lacus suscipit quis sollicitudin sapien ornare. Cras gravida nisi lacinia risus tristique aliquet. Nullam porta nibh ut est mattis eu tristique augue imperdiet. Aenean ac mauris a arcu malesuada ultricies. Vestibulum quis elit nisl. Duis est erat, mattis quis sollicitudin sit amet, mollis ac lacus. Pellentesque malesuada nisi tempus magna convallis sagittis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris cursus tristique urna eu dignissim. Mauris sed ornare leo.
In lacinia pretium nunc eu malesuada. Sed dictum, metus sit amet lobortis venenatis, felis lacus pretium enim, in interdum ligula enim eu leo. Cras sit amet auctor turpis. Nulla consectetur eleifend iaculis. Donec viverra elementum nibh quis consequat. Vestibulum fringilla dictum nibh quis gravida. Mauris pretium dolor sed urna blandit viverra. Integer elementum, augue non porttitor egestas, enim erat pellentesque nunc, quis sagittis nulla lectus sit amet nisi. Ut ullamcorper sapien vitae velit vestibulum eget facilisis lacus luctus. Aliquam volutpat pellentesque eleifend. Sed suscipit eleifend augue, in luctus libero iaculis elementum. Suspendisse potenti. Donec non dolor risus. Ut risus metus, scelerisque vitae commodo sed, bibendum nec felis. Ut non mi at nisl pharetra tristique.
Nam ac diam nec justo bibendum placerat. Maecenas at neque eget orci fringilla accumsan. Cras auctor cursus cursus. Donec tincidunt facilisis turpis quis gravida. Vivamus lacinia mi ut libero dapibus rhoncus. Donec eget justo odio, nec rutrum lacus. Fusce ac dolor ac enim sollicitudin vulputate. Quisque ipsum sem, vestibulum blandit auctor eget, gravida eu eros. Nam tincidunt, tellus eget faucibus scelerisque, dui purus pulvinar nisi, vel tempus augue mauris a nibh.
Nam nec magna mattis justo ullamcorper pellentesque et ultricies risus. Donec dictum consectetur libero at fermentum. Vestibulum a erat euismod orci feugiat pretium. Integer venenatis purus ac odio semper imperdiet semper arcu auctor. Pellentesque facilisis arcu lobortis massa semper ultricies. Etiam suscipit, libero vitae pharetra pretium, neque lectus fringilla velit, at ornare quam tellus eu sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin in nulla nec magna commodo sagittis a in mauris. Suspendisse dapibus nisl sed ligula scelerisque consequat. Curabitur facilisis tempor nibh sit amet iaculis. Sed vehicula ligula a mi cursus eleifend. Cras nec neque turpis. Praesent egestas pharetra dictum. Aenean tempus mollis lorem in auctor. Donec nulla augue, commodo ut convallis sit amet, lacinia commodo orci.
Vivamus non elit id turpis pulvinar accumsan. Ut vel dolor nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean semper justo enim, sit amet congue dui. Cras blandit orci non sem varius ut laoreet nulla pretium. Maecenas eu orci odio. Phasellus sodales felis sed lacus gravida accumsan. In ut odio ac dui ornare sagittis. Quisque ultrices porta nunc, sit amet sodales est euismod eget. Vestibulum lacinia pulvinar placerat. Duis sed ipsum neque, quis posuere nisi.
Cras at velit non urna hendrerit pretium. Curabitur eu tellus tortor. Duis vitae sodales velit. Etiam elementum elit vitae nisi rutrum faucibus. Duis ligula quam, egestas ac sodales et, accumsan accumsan tellus. Morbi convallis ullamcorper ligula. Vestibulum quis feugiat nulla. Duis et porttitor diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse pellentesque arcu sed erat vestibulum viverra. Aenean fermentum risus a magna tincidunt feugiat. Vivamus mattis nisl at lectus varius varius. Donec ut turpis ut turpis venenatis hendrerit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himeneos. Fusce congue imperdiet ante, sit amet mattis lectus tempor ac.
In consequat sodales auctor. Donec imperdiet dui in metus accumsan dignissim. In aliquet vehicula purus ut molestie. Proin venenatis nulla id elit eleifend cursus. Duis mollis nisl quis nisi elementum nec sollicitudin nisi feugiat. Nunc consequat enim non tellus pretium in luctus dolor placerat. Maecenas commodo tempor congue. In egestas bibendum elit, vel sodales felis tincidunt viverra. Fusce ipsum magna, imperdiet a sodales nec, varius ac nulla. Vestibulum laoreet, diam vel pellentesque volutpat, tellus eros aliquam urna, et feugiat justo lorem vitae lorem. Aenean sed turpis id erat gravida feugiat dignissim a ante. Vivamus sit amet eros orci, malesuada adipiscing turpis.
Sed tincidunt orci mauris. Donec porta euismod urna, ut tristique nisi adipiscing in. Suspendisse tempus tellus ultricies erat tincidunt venenatis. Aenean eu lectus dolor. Maecenas posuere, lacus vel euismod posuere, leo lorem feugiat lacus, at tincidunt elit est in mi. Fusce sed eros massa. In vitae lacus urna.
Pellentesque laoreet venenatis nibh vitae sagittis. Sed nunc lectus, tristique a volutpat eget, interdum at quam. Pellentesque quis lacus et dolor adipiscing porta sit amet vitae libero. Curabitur sollicitudin gravida tincidunt. Vivamus tincidunt tempus luctus. Maecenas ut adipiscing ligula. Maecenas sed eros vel ante fermentum facilisis tincidunt in libero.
Etiam non augue felis, a adipiscing enim. Curabitur velit lacus, tincidunt ac vestibulum et, egestas ac purus. Nam ac auctor diam. Fusce lorem sem, fringilla id commodo in, egestas nec diam. Aliquam est sapien, eleifend sit amet pulvinar a, dapibus at magna. Donec dolor mauris, varius et condimentum vitae, suscipit congue risus. Sed sit amet urna turpis.
Integer ornare libero eu diam dictum bibendum. Sed sed mi leo. Vivamus lacinia urna quis mauris gravida ultricies. Mauris tincidunt fringilla justo a mattis. Sed rhoncus augue nec risus pretium semper. Suspendisse porta mattis ultricies. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla nec volutpat libero. Cras lobortis eros elementum lorem congue dignissim. Suspendisse non quam urna, a semper metus. Maecenas auctor, orci non varius fermentum, dui leo interdum turpis, fringilla facilisis lorem massa ut libero.
Aliquam ac purus porttitor dolor tristique feugiat sed eu dui. Nunc blandit ante at nisl gravida ullamcorper. Nunc porta sagittis facilisis. Donec fringilla massa dignissim ipsum vulputate laoreet. Ut at sapien mauris. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac lacus tellus, id euismod nulla. Proin ultricies auctor dui, sit amet consequat orci ullamcorper nec. Sed vestibulum condimentum rhoncus. Curabitur facilisis dapibus augue eget aliquet. Nunc enim erat, tincidunt quis tincidunt quis, aliquam non magna
Fusce scelerisque, diam eu cursus cursus, diam dui feugiat purus, a interdum eros risus at elit. Pellentesque nulla libero, lobortis a blandit id, adipiscing nec felis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam tristique dignissim metus id molestie. Nam at tortor eget nibh aliquet varius a sit amet nulla. Praesent sed metus urna. Etiam turpis sapien, faucibus tincidunt molestie sed, auctor in elit. Nullam et erat ac arcu varius pharetra sit amet eu ipsum. Vestibulum pulvinar auctor dui, at vehicula turpis scelerisque quis. Cras eu quam nisl.
Nam suscipit risus vitae turpis venenatis. Phasellus euismod aliquam turpis id tempor. Vivamus nec dolor quis quam tincidunt vulputate eget eu dolor. Nulla facilisi. Praesent dapibus, orci et sollicitudin dictum, urna leo sagittis quam, ut aliquam enim velit et quam. Morbi rhoncus lacinia turpis, ut pulvinar tellus semper in. Cras et nisi ante, et dapibus dui. Nulla egestas dui at ante molestie commodo. Etiam nec augue lectus, eget viverra tellus. Duis quam dolor, mollis eget consequat quis, euismod et leo. Aliquam volutpat volutpat lacus, non tempor odio porttitor ac. Vivamus pretium mauris semper tortor auctor gravida. Sed ante lorem, hendrerit bibendum rutrum in, iaculis id dolor. Nulla ut libero magna.
Sed dignissim laoreet bibendum. Aliquam erat volutpat. Suspendisse potenti. Ut mattis augue non odio sodales sed mattis sapien ullamcorper. Proin metus lectus, mattis ut ultricies quis, semper vel tellus. Duis elit lacus, viverra vel lobortis et, gravida id magna. Nunc accumsan, neque vitae molestie tempor, neque elit commodo ipsum, eget ultrices metus tellus sed ligula. Integer pulvinar varius nulla sed rutrum. In pulvinar quam ut ante consectetur sed faucibus massa condimentum. Donec consequat scelerisque tempus. Quisque in lectus facilisis libero dapibus varius vel quis tellus. Suspendisse pulvinar sollicitudin purus quis aliquet. Morbi varius, magna faucibus interdum tincidunt, mi justo pellentesque sem, et ullamcorper dolor felis sit amet nunc. Vivamus pharetra pellentesque lacus non convallis. Praesent ultricies justo sollicitudin purus malesuada pulvinar. Nulla enim lectus, venenatis nec tempor sed, egestas dignissim nulla.
Pellentesque tincidunt tempor turpis viverra sollicitudin. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis neque ac dui imperdiet lacinia vulputate ac mauris. Vivamus nisi enim, pellentesque id eleifend vel, aliquet quis elit. Integer ut sagittis ligula. Integer eget nisi nulla. Etiam lobortis euismod felis, eu congue neque suscipit pellentesque. Aenean a velit quam. Cras et purus magna, a aliquam lorem.
Nam dignissim, tortor sed dignissim rhoncus, nisl felis semper nisl, sed faucibus ante est a dui. Etiam eros tortor, accumsan eu vulputate non, ullamcorper a diam. Ut fringilla imperdiet varius. Suspendisse nec lorem non tellus vulputate aliquet. Fusce vestibulum consequat orci non fringilla. Phasellus odio turpis, viverra rutrum interdum et, condimentum sit amet tortor. Donec semper justo ac elit sollicitudin consequat mollis tellus venenatis. Pellentesque justo ipsum, vestibulum accumsan congue ac, ultricies id nunc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nunc odio, consectetur non blandit eu, faucibus eu est.
Praesent libero lacus, rutrum sed luctus id, dapibus ut tellus. Vestibulum id est lacus. Ut viverra tellus vestibulum arcu facilisis convallis. Sed interdum condimentum libero et pellentesque. Nam turpis quam, auctor laoreet sollicitudin ut, sollicitudin eu dolor. Donec laoreet eros et quam tempor scelerisque rutrum lectus ornare. Cras dui tellus, varius in tristique a, volutpat id diam. Donec condimentum imperdiet nulla, at sagittis urna convallis non. Vivamus dapibus magna pellentesque lectus porttitor a dignissim velit fringilla. Nullam tincidunt ante vitae tellus ullamcorper porta. Morbi tincidunt elit sed enim ultrices vel tempor augue sollicitudin. Quisque eleifend auctor scelerisque. Mauris sit amet tortor eget neque lobortis dapibus a eu sapien. Maecenas bibendum tortor vitae lacus auctor non vehicula ligula aliquam. Donec euismod tempus tortor.
In eros orci, aliquet at commodo ac, tincidunt et ligula. Nam lobortis tristique nisl a eleifend. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas nec sapien vitae tortor posuere hendrerit ut ac magna. Sed iaculis posuere ante, nec mollis urna fermentum vitae. Duis euismod augue venenatis diam elementum viverra. Mauris a erat eu enim tempus sodales et vitae lorem. Phasellus dolor augue, varius sit amet varius nec, faucibus vel nibh. Sed elementum dignissim porttitor. Fusce nec enim augue. Pellentesque in gravida sapien. Donec erat odio, ornare et molestie ut, dignissim id lorem. Duis leo felis, molestie in ullamcorper a, vestibulum in augue.
Mauris pulvinar tristique nunc, eget malesuada urna ullamcorper sed. Phasellus nibh lacus, dictum id gravida a, consequat nec quam. Etiam posuere commodo lorem vitae eleifend. Etiam ullamcorper vestibulum nulla eu facilisis. In dui nisl, tristique sed adipiscing eget, porta sit amet nunc. Sed elementum eros ante. Aenean at quam vitae lorem sodales aliquam vitae quis mauris. Donec mattis accumsan ligula eu interdum. Cras ut pharetra tellus. Maecenas et sem eu lorem lacinia pulvinar vitae sit amet felis. Nulla facilisi. Ut hendrerit, dolor a vestibulum imperdiet, neque tellus euismod est, blandit placerat purus massa lobortis lorem. Ut faucibus lacinia faucibus. In ac diam erat, non euismod arcu.
Quisque euismod quam hendrerit dolor euismod egestas ut et nisi. Praesent laoreet ultrices auctor. Ut odio nibh, porta a aliquet at, aliquam vitae nulla. Nulla tristique sem ut nisl lobortis cursus. Maecenas rutrum gravida convallis. Etiam non neque quis arcu vehicula tristique. Vestibulum hendrerit condimentum nulla eu congue.
Curabitur ac felis elit, vel commodo mauris. Cras pharetra, diam id pulvinar aliquet, neque orci tristique est, eget accumsan magna purus at nisi. Praesent consequat scelerisque tellus sed pretium. Proin eu ligula nulla. Fusce vulputate venenatis tristique. Suspendisse tempus est id eros ultrices at aliquam ante venenatis. Quisque elementum est at quam interdum congue. Cras lacinia accumsan arcu eget convallis. Curabitur nec enim purus. In congue mi a risus suscipit malesuada. Mauris faucibus sem id turpis viverra vestibulum.
Praesent sed tellus quis diam sollicitudin euismod. Suspendisse in commodo risus. Phasellus lectus velit, dapibus eget imperdiet in, consectetur sit amet nisl. Nullam hendrerit ipsum sit amet tellus pharetra sit amet congue mauris tincidunt. Vestibulum ultricies molestie tempus. Sed varius aliquet purus, vel sagittis lacus pulvinar fermentum. Morbi malesuada venenatis nunc, sit amet dignissim ante rutrum laoreet.
Pellentesque mattis est id arcu dignissim eget sollicitudin arcu ullamcorper. Nunc et turpis eu odio molestie convallis. Vestibulum ante mi, feugiat eu hendrerit nec, pulvinar eget felis. Curabitur tellus sapien, ornare in scelerisque cursus, tempor nec orci. Duis arcu urna, tempus non posuere non, gravida nec felis. Vivamus id est eget tortor vehicula ullamcorper. Maecenas vel tempor massa.
Nulla nec porttitor erat. Pellentesque lectus turpis, eleifend ut lacinia eu, laoreet eget magna. Suspendisse potenti. Curabitur sit amet purus vitae nulla sollicitudin fermentum. Vestibulum fermentum, dui ac iaculis malesuada, ligula lorem pretium purus, id luctus elit metus a lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus dapibus commodo malesuada. Curabitur porttitor iaculis est in porta. Fusce dignissim, turpis sit amet vehicula cursus, nisi urna lacinia quam, id interdum risus neque at augue. Fusce tellus lacus, elementum at varius eu, rhoncus sed nisi. Duis sed felis quis nunc vulputate tincidunt. Vivamus eu eleifend turpis. Phasellus commodo, eros eu ullamcorper feugiat, risus dolor placerat turpis, quis hendrerit orci purus non magna. Integer in sem et orci vestibulum placerat posuere sed metus. Pellentesque elit tellus, fermentum in placerat sit amet, convallis at tellus.
Ut ut quam nulla, et facilisis arcu. Aliquam sed vehicula leo. Suspendisse potenti. Fusce tempor elementum fermentum. Morbi a magna tortor, eget vestibulum enim. Curabitur tincidunt diam viverra urna sagittis viverra. Praesent tempor mattis orci, nec blandit eros elementum eu. Cras nec dignissim ante. Suspendisse enim nisi, consequat quis faucibus a, tincidunt nec ipsum. Aliquam eget neque libero, ac fermentum massa. Nulla convallis sodales tincidunt. Nulla consequat, lorem ac consequat rhoncus, tortor orci gravida lacus, condimentum consectetur turpis leo non libero.
Aenean nec enim sed sapien interdum auctor a quis mauris. Maecenas non tellus eu ipsum vehicula laoreet. Ut aliquet blandit ultrices. Ut euismod risus et augue ornare vitae varius lectus iaculis. Vivamus venenatis volutpat dolor, et porttitor turpis viverra quis. Sed vel libero massa, non sodales erat. Phasellus scelerisque justo et nibh accumsan porttitor. Nam pellentesque venenatis nunc, at fermentum neque rutrum rutrum. Proin et mauris diam. Etiam commodo commodo lectus sed egestas. Aliquam vehicula rhoncus congue. Donec eget sem quam, eu auctor orci.
Phasellus eu sem nisi. Aliquam ac nisi neque, vel dictum magna. Integer aliquet vulputate massa, vitae pretium augue lacinia at. Aliquam a mi volutpat nibh elementum vulputate in a sem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vitae est non leo blandit fermentum. Proin tempor dapibus sapien, in tincidunt leo cursus non. Nullam euismod elementum metus vitae pellentesque. Etiam rutrum ligula sit amet quam aliquet congue sed eu felis. Aenean id ornare eros. In hac habitasse platea dictumst. In elit ante, pellentesque rutrum dignissim quis, molestie vitae ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris consectetur commodo ullamcorper.
Mauris sit amet enim neque. Vestibulum sit amet lorem velit. Suspendisse ut fringilla justo. Quisque nulla massa, eleifend at dapibus ac, rhoncus varius neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis nisi quam, posuere quis aliquam a, dapibus vel sem. Aliquam sit amet dui justo. Maecenas massa mi, consectetur a convallis at, aliquet elementum sapien. Cras a erat eu augue placerat ultricies nec id nibh. In nec ultricies lectus. Nam accumsan malesuada vestibulum. Vivamus vestibulum purus et urna eleifend interdum. Proin et metus ut nibh interdum bibendum. Aenean vel magna vel massa bibendum faucibus eget non velit.]]>.toString();
		
		protected var t2:String = <![CDATA[<p>Super mega <a href="http://www.google.fr/">text<span></span></a> test <a href="megaLien.com">truc mega mega link sur plusieurs lignes bla bla bla bla bla link sur plusieurs lignes bla bla bla bla bla</a> ultra cool ! hopla. test</p>]]>;
		
		protected var t3:String = <![CDATA[<p>Super mega <a href=""><span></span>text</a> text  <a href="">text</a> text <a href="">text</a> text <a href="">text</a> text</p>]]>;
		
		protected var textField:TextField;
		protected var squareSize:int = 1024;
		protected var scaleSize:Number;
		//protected var _bitmaps:Array;
		protected var textBitmap:Bitmap;
		protected var textBitmapData:BitmapData;
		protected var textBuffer:BitmapData;
		protected var _base:ResizableComponent;
		protected var _dragC:ResizableComponent;
		
		[Embed(source="../../../../../../lib/graphics/autoScaleNineTest2.png")]
		public static const AutoScale9Image:Class;
		public static const __autoScale9ImageData:BitmapData = (new AutoScale9Image() as Bitmap).bitmapData;
		
		public function ResizableComponentTest ()
		{
			
		}
		
		override public function init ():void
		{
			super.init();
			
			_wrapper = new StageWrapper(stage)//, new Point(1024, 768));
			
			stage.quality = StageQuality.HIGH;
			//stage.quality = StageQuality.LOW;
			
			scaleSize = _wrapper.ratio;
			
			//stage.addChild(new Stats());
			
			//var a:ResizableComponent = (new BorderComponent(0xFF0000, 2)).place(20, 20, 20, 20).into(_wrapper, "a");
			/*
			
			var input:Input = new Input(false, "Name", 0x888888);
			
			input.center(0, 0).size(150, 20).into(_wrapper);
			
			input.backgroundImage.background(0xCCCCCC, 1);
			input.backgroundImage.place(-2, -4, -2, -4);
			input.backgroundImage.radius(6);
			input.backgroundImage.border(2, 0xFF0000);
			
			var btn:AdvancedBitmap = new AdvancedBitmap(__autoScale9ImageData, BitmapRender.AUTO_SCALE9_RENDER_MODE, 2);
			btn.center(0, 50).size(100, 20).into(_wrapper);
			
			TweenMax.to(btn, 1, {
				width: 400,
				alpha: .5,
				yoyo: true,
				repeat: 1000,
				ease: Strong.easeInOut
			});
			
			*/
			
			//var signature:Vector.<String> = Vector.<String>("Frite HomeView toto tutu listRenderer title".split(" "));
			
			//var style:Object = _wrapper.styleCentral.getComputedStyleFromSignature(signature);
			
			_wrapper.styleCentral.styleData = {
				"BaseIphone" : {
					place: [10, 10, 10, 10],
					backgroundImage: {
						borderRadius: 20,
						border: [4, 0x00FF00],
						background: [0xCCCCCC, 1]
					}
				},
				"BaseIphone title" : {
					font: "Arial",
					fontSize: 18,
					text: ["iPhone"],
					top: 20,
					horizontalCenter: 0
				},
				"BaseIpad" : {
					place: [20, 20, 20, 20],
					backgroundImage: {
						borderRadius: 10,
						border: [2, 0xFF0000],
						background: [0xAAAAAA, 1]
					}
				},
				"BaseIpad title" : {
					font: "Verdana",
					fontSize: 14,
					text: ["iPad"],
					top: 10,
					horizontalCenter: 0
				}
			};
			
			_base = new ResizableComponent();
			_base.style("BaseIphone");
			_base.into(_wrapper);
			
			var title:Label = new Label(true, false, "Super titre");
			title.style("title");
			title.into(_base, "title");
			
			//(new BorderComponent(0xFF0000, 1)).place(0, 0, 0, 0).into(base);
			
			stage.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void
			{
				//_base.style(_base.styleName == "BaseIphone" ? "BaseIpad" : "BaseIphone");
				
				/*
				_wrapper.styleCentral.setStyle("title", {
					color: 0x0000FF
				});
				*/
				
				//trace(_wrapper.styleCentral.getStyle("title").color);
				
				//trace(_wrapper.styleCentral.getComputedStyleFromSignature(Vector.<String>(["BaseIphone", "title"])).color);
				
				//trace(base.styleName);
			});
			
			touchTest();
			
			//Multitouch.mapTouchToMouse
			
			
			
			/*
			trace(Worker.current.isPrimordial);
			
			var ba:ByteArray = new ByteArray();
			ba.writeObject();
			
			WorkerDomain.current.createWorker();
			//var worker:Worker = new Worker();
			//Worker.current.
			
			//worker.start();
			
			*/
			//var styleCentral:StyleCentral = new StyleCentral();
			
			
			
			
			
			/*
			StyleCentral.addStyle("HomeView title", {
				font: "Arial",
				fontSize: 15,
				margin: [10, 10, 20, 20]
			});
			*/
			
			//trace( { }["toString"]());
			//trace(new BitmapData(10, 10)["toString"]())
			//trace(getQualifiedClassName( { } ));
			//trace(getQualifiedClassName( new BitmapData(10, 10) ));
			//trace(getQualifiedClassName( XML ));
			//trace(getQualifiedClassName( String ));
			//trace(getQualifiedClassName( 8 ));
			//trace(getQualifiedClassName( 8.4 ));
			// Une méthode invalidateStyle dans ResizableComponent invalide la méthode updateStyle
			
			// La méthode updateStyle récupère la liste de tous les noms de style des parents
			// Disons qu'on soit dans le title, on a donc ce sélécteur :
			// [HomeView, list, container, listRenderer, title]
			
			// Le StyleCentral peut donc retourner le computed style correspondant
			// StyleCentral.getMixedStyle(pSelector:String)
			// Le résultat de "HomeView listRenderer title" overridé sur "HomeView > title" ce qui nous donne :
			
			//var computedStyle:Object = {
				//font: "Verdana",
				//fontSize: 15,
				//color: 0xCCCCCC,
				//center: [0, 0],
				//margin: null
			//}
			
			//title.applyStyle("title");
			//title.applyStyle("title2");
			
			// La méthode updateStyle appel la méthode protégée computeStyle
			// La méthode computeStyle(pComputedStyle:Object) va, par défaut, injecter chacune des valeurs du style.
			// Les tableaux sont convertis en appel de méthode.
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			/*
			XML.ignoreWhitespace = true;
			XML.prettyIndent = 0;
			XML.prettyPrinting = true;
			
			var xmlStyle:XML = <style>
				<HomeView>
					<title>
						font: "Arial";
						fontSize: 15;
						margin: 10 10 20 20;
					</title>
					<ListRenderer>
						margin: 5 5 5 5;
						<avatar>
							border: 2;
							width: 100;
							height: 100;
							renderMode: { BitmapRender.AUTO_SCALE9_RENDER_MODE };
						</avatar>
						<title>
							font: "Verdana";
							fontSize: 12;
							color: 0xCCCCCC;
							center: 0 0;
						</title>
					</ListRenderer>
				</HomeView>
			</style>
			
			var titlesStyle:XMLList = xmlStyle..*["title"];
			
			var style:StyleSheet = new StyleSheet();
			
			for each (var s:XML in titlesStyle)
			{
				//trace(s.toString().split(/;\s+/));
				
				style.parseCSS(s);
				
				//trace(style.styleNames);
				trace(style.getStyle("*").font);
			}
			*/
			
			/*
			var style:StyleSheet = new StyleSheet();
			
			style.parseCSS(<![CDATA[
				.test {
					val: 1
				}
				.tutu {
					val: 5
				}
			]]>);
			
			trace(style.styleNames);
			trace("val" in style.getStyle(".test"));
			*/
			/*
			var label:Label = new Label(true);
			
			//label.border().place(50, 100, NaN, 100).into(_wrapper);
			label.border().center(0, 0).into(_wrapper);
			
			label.text("Salut toi (:");
			*/
			
			//var htmlText:HTMLText = new HTMLText(false);
			
			//htmlText.border().place(100, 100, 100, 100).into(_wrapper);
			//htmlText.border().size(200, 200).into(_wrapper);
			/*
			htmlText.style(<![CDATA[
				p {
					font-size: 18px;
				}
				a {
					text-decoration: underline;
					color: #ff0000;
				}
			]]>);
			
			htmlText.html(t2);
			
			htmlText.textField.filters = [
				new DropShadowFilter(.5, 90, 0, .4, 3, 3, 1, 1)
				//new BevelFilter(1, 90)
			]
			*/
			//(new BorderComponent()).place(0, 0, 0, 0).into(label);
			//(new BorderComponent()).place(0, 0, 0, 0).into(htmlText);
			
			
			/*
			textField = new TextField();
			
			textField.selectable = false;
			textField.mouseWheelEnabled = false;
			textField.mouseEnabled = false;
			
			textField.x = 200;
			textField.y = 200;
			
			textField.width = 100;
			textField.height = 200;
			
			textField.wordWrap = true;
			textField.multiline = true;
			
			var styleSheet:StyleSheet = new StyleSheet();
			
			styleSheet.parseCSS(<![CDATA[
				a {
					text-decoration: underline;
					color: #ff0000;
				}
			]]>.toString());
			
			textField.styleSheet = styleSheet;
			
			textField.htmlText = t2;
			
			//textField.cacheAsBitmap = true;
			//textField.cacheAsBitmapMatrix = new Matrix(1.5, 0, 0, 1.5);
			
			_wrapper.addChild(textField);
			
			var runs:Array = textField.getTextRuns();
			
			trace("GET RUNS");
			
			for each (var run:TextRun in runs)
			{
				if (run.textFormat.url.length > 0)
				{
					trace("link", run.textFormat.url, "at", run.beginIndex, run.endIndex);
					
					
				}
			}
			
			*/
			
			/*
			var text:String = textField.htmlText;
			var minText:String = text.toLowerCase();
			
			var index:int = minText.indexOf("<a");
			var lastIndex:int = minText.indexOf("</a>");
			
			while (index != -1 && lastIndex != -1)
			{
				trace("DETECTED", index, lastIndex, text.substring(text.indexOf(">", index) + 1, lastIndex));
				
				var firstRect:Rectangle = textField.getCharBoundaries(text.indexOf(">", index) + 1);
				var lastRect:Rectangle = textField.getCharBoundaries(lastIndex);
				
				_wrapper.graphics.beginFill(0xFF0000, .5);
				
				if (firstRect != null)
					_wrapper.graphics.drawRect(textField.x + firstRect.x, textField.y + firstRect.y, firstRect.width, firstRect.height);
				
				_wrapper.graphics.beginFill(0x00FF00, .5);
				
				if (lastRect != null)
					_wrapper.graphics.drawRect(textField.x + lastRect.x, textField.y + lastRect.y, lastRect.width, lastRect.height);
				
				index = minText.indexOf("<a", lastIndex + 1);
				lastIndex = minText.indexOf("</a>", lastIndex + 1);
			}
			*/
			
			
			
			//var b:ResizableComponent = (new BorderComponent(0x00FF00, 2)).place(20, 20, 20, 20).into(a, "b").flatten(.1, null, false);
			
			//var c:ResizableComponent = (new BorderComponent(0x0000FF, 2)).place(20, 20, 20, 20).into(b, "c");
			
			//stage.addEventListener(MouseEvent.CLICK, clickHandler);
			/*
			textBuffer = new BitmapData(squareSize, squareSize, true, 0x00000000);
			
			textBitmap = new Bitmap();
			
			textBitmap.x = 20;
			textBitmap.y = 20;
			
			_wrapper.addChild(textBitmap);*/
			
			//clickHandler();
			
			/*
			
			var styleSheet:StyleSheet = new StyleSheet();
			
			styleSheet.parseCSS(<![CDATA[
				a {
					text-decoration: underline;
					color: #ff0000;
					ultra-top: 16px;
				}
				.test {
					color: #ff0000;
					ultra-top: 16px;
				}
			]]>.toString());
			
			var style1:Object = styleSheet.getStyle(".test");
			trace(styleSheet.styleNames);
			
			trace("----");
			for (var name:String in style1) 
			{
				trace(name, style1[name]);
			}
			
			
			
			
			
			
			_bundle.assets = new Assets();
			_bundle.styleCentral = new StyleCentral();
			
			styleCentral.setStyle("BtnLabel", {
				font: Assets.get("PopulaireBoldFont"),
				color: 0xFF0000
			});
			
			styleCentral.setStyle("FatTitle", {
				font: Assets.get("PopulaireBoldFont"),
				color: 0xFF0000
			});
			
			styleCentral.setStyle("label", {
				color: 0xFF0000,
				antialias: "normal"
			});
			
			styleCentral.setStyle("HomeView", {
				margin: 10,
				tutu: 1000,
				loginBtn: {
					top: 50,
					background: Assets.get("LoginBtnBackground"),
					background2x: Assets.get("LoginBtnBackground2x"),
					//label: ObjectUtils.extra({color: 0xFF0000}, styleCentral.getStyle("BtnLabel"), false)
					label: styleCentral.getStyle("BtnLabel")
				}
			});
			
			styleCentral.getStyle("HomeView");
			
			//_bundle.styleCentral.applyStyle("HomeView", this);
			
			// --- HomeView
			
			StyleCentral.applyStyle("HomeView", this);
			
			StyleCentral.applyStyle("loginBtn", _loginBtnInstance);
			
			StyleCentral.applyStyle("label", _label);
			
			IStylizable
			
			IStylizable.injectStyle(pPropName:String, pValue:Object);
			
			if (pPropName == "antialias")
			{
				//_textField.antialiasType = 
			}
			else
			{
				this[pPropName] = pValue;
			}
			
			
			styleCentral.setStyle("CommentsViewTabletPortrait", {
				commentPanel: styleCentral.getStyle("TabletCommentPanel"),
				listPadding: 5,
				listItem: {
					avatar: {
						right: 10
					}
				},
				background: {
					bitmapData: Assets.get("LoginPhoneBackground"),
					left: 0,
					bottom: 0
				}
			});
			styleCentral.setStyle("CommentsViewTabletLandscape", {
				commentPanel: styleCentral.getStyle("TabletCommentPanel"),
				listPadding: 10,
				listItem: {
					avatar: {
						right: 10
					}
				}
			});
			
			styleCentral.setStyle("CommentsViewPhone", {
				commentField: {
					bottom: 0
				},
				listPadding: 10,
				listItem: {
					avatar: {
						left: 10
					}
				}
			});
			
			// -- CommentsView
			
			if (tablet)
			{
				StyleCentral.applyStyle("CommentsViewTabletPortrait", this);
				
				StyleCentral.applyStyle("CommentsViewTabletLandscape", this);
				
				
			}
			else
			{
				StyleCentral.applyStyle("CommentsViewPhone", this);
			}
			
			
			// -- CommentsView Delegate
			
			var item:CommentItem = new CommentItem();
			
			StyleCentral.applyStyle("listItem", item);
			
			StyleCentral.getProp("listPadding", this);
			
			// -- CommentItem
			
			StyleCentral.applyStyle("avatar", _avatar);
			
			
			*/
		}
		
		protected function clickHandler (event:MouseEvent = null):void 
		{
			if (textField != null)
			{
				_wrapper.removeChild(textField);
				textField = null;
			}
			/*
			if (_bitmaps != null)
			{
				for each (var bitmap:Bitmap in _bitmaps)
				{
					_wrapper.removeChild(bitmap);
				}
			}
			
			_bitmaps = [];
			*/
			/*
			if (textBitmapData != null)
				textBitmapData.dispose();
			
			textBitmapData = new BitmapData(_wrapper.width * scaleSize - 40, _wrapper.height * scaleSize - 40, true, 0x00000000);
			
			textBitmap.width = _wrapper.width - 40;
			textBitmap.height = _wrapper.height - 40;
			
			textBitmap.bitmapData = textBitmapData;
			*/
			textField = new TextField();
			
			textField.selectable = false;
			textField.mouseWheelEnabled = false;
			textField.mouseEnabled = false;
			
			textField.x = 20;
			textField.y = 20;
			
			textField.width = _wrapper.width - 40;
			textField.height = _wrapper.height - 40;
			
			textField.wordWrap = true;
			textField.multiline = true;
			
			var styleSheet:StyleSheet = new StyleSheet();
			
			styleSheet.parseCSS(<![CDATA[
				a {
					text-decoration: underline;
					color: #ff0000;
				}
			]]>.toString());
			
			textField.styleSheet = styleSheet;
			
			textField.htmlText = t;
			
			//textField.cacheAsBitmap = true;
			//textField.cacheAsBitmapMatrix = new Matrix(1.5, 0, 0, 1.5);
			
			_wrapper.addChild(textField);
			/*
			var totalX:int = Math.ceil(textField.width / squareSize * scaleSize);
			var totalY:int = Math.ceil(textField.height / squareSize * scaleSize);
			
			for (var i:int = 0; i < totalX; i++) 
			{
				for (var j:int = 0; j < totalY; j++) 
				{
					TimerUtils.wait(stage, i + j * totalX, false, drawTextSquare, [i, j]);
				}
			}*/
		}
		
		public function drawTextSquare (pX:int, pY:int):void
		{
			//trace("DRAW", pX, pY);
			
			var matrix:Matrix = new Matrix();
			matrix.scale(scaleSize, scaleSize);
			matrix.translate(
				- pX * (squareSize / scaleSize),
				- pY * (squareSize / scaleSize)
			);
			
			var bufferRect:Rectangle = new Rectangle(0, 0, squareSize / scaleSize, squareSize / scaleSize);
			
			var destPoint:Point = new Point(
				pX * (squareSize / scaleSize),
				pY * (squareSize / scaleSize)
			);
			
			textBuffer.fillRect(bufferRect, 0);
			
			textBuffer.drawWithQuality(textField, matrix, null, null, null, false, StageQuality.MEDIUM);
			
			textBitmapData.copyPixels(textBuffer, bufferRect, destPoint);
			
			//bitmapData.draw(textField, null, null, null, null, false);
			
			//var bitmap:Bitmap = new Bitmap(bitmapData);
			
			//bitmap.x = pX * (squareSize / scaleSize) + 20;
			//bitmap.y = pY * (squareSize / scaleSize) + 20;
			
			//bitmap.scaleX = 1 / scaleSize;
			//bitmap.scaleY = 1 / scaleSize;
			
			//_wrapper.addChild(bitmap);
			
			//_bitmaps.push(bitmap);
		}
		
		protected function touchTest ():void
		{
			MouseToTouchEmulator.auto(stage);
			
			_base.scaleX = .5;
			_base.scaleY = .5;
			
			_base.horizontalOffset = 300;
			_base.verticalOffset = 200;
			
			_base.rotation = 30;
			
			_base.name = "base";
			
			_dragC = new ResizableComponent();
			_dragC.backgroundImage.background(0xFF0000, 1);
			
			_dragC.size(100, 100).into(_base);
			
			_dragC.name = "dragC";
			
			TouchEmulator.emulate(_base, this);
			TouchEmulator.emulate(_dragC, this);
		}
		
		/* INTERFACE fr.babos.touch.delegate.ITouchDragDelegate */
		
		public function touchDragLock (pTarget:DisplayObject):void
		{
			trace("TOUCH DRAG LOCK");
		}
		
		public function touchDragUnlock (pTarget:DisplayObject):void
		{
			trace("TOUCH DRAG UNLOCK");
		}
		
		public function touchDragging (pTarget:DisplayObject, pDirection:String, pXDelta:Number, pYDelta:Number, pPoints:Vector.<Point>):Boolean
		{
			var c:ResizableComponent = pTarget as ResizableComponent;
			
			c.horizontalOffset += pXDelta;
			c.verticalOffset += pYDelta;
			
			if (
					c.horizontalOffset <= 0 || c.horizontalOffset >= c.parent.width - c.width
					||
					c.verticalOffset <= 0 || c.verticalOffset >= c.parent.height - c.height
				)
			{
				if (c == _dragC)
				{
					c.horizontalOffset = Math.max(0, Math.min(c.horizontalOffset, c.parent.width - c.width));
					c.verticalOffset = Math.max(0, Math.min(c.verticalOffset, c.parent.height - c.height));
				}
				
				return false;
			}
			
			return true;
		}
	}
}